{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 생성한 데이터셋 업로드"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "from dotenv import load_dotenv\n",
    "\n",
    "load_dotenv()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# LangSmith 추적을 설정합니다. https://smith.langchain.com\n",
    "# !pip install -qU langchain-teddynote\n",
    "from langchain_teddynote import logging\n",
    "\n",
    "# 프로젝트 이름을 입력합니다.\n",
    "logging.langsmith(\"CH16-Evaluations\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "\n",
    "df = pd.read_csv(\"data/ragas_synthetic_dataset.csv\")\n",
    "df.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## DeepL 을 활용한 번역\n",
    "\n",
    "- [DeepL API 키 발급](https://www.deepl.com/ko/your-account/keys)\n",
    "\n",
    "발급 받은 키를 `.env` 파일에 `DEEPL_API_KEY` 로 저장합니다."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# !pip install -qU deepl"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "import os\n",
    "from langchain_teddynote.translate import Translator\n",
    "\n",
    "# api키 설정\n",
    "deepl_api_key = os.getenv(\"DEEPL_API_KEY\")\n",
    "\n",
    "# 객체 생성\n",
    "translator = Translator(deepl_api_key, \"EN\", \"KO\")\n",
    "\n",
    "# 번역 실행\n",
    "translated_text = translator(\"hello, nice to meet you\")\n",
    "print(translated_text)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "from tqdm import tqdm\n",
    "\n",
    "# 번역\n",
    "for i, row in tqdm(df.iterrows(), total=len(df), desc=\"번역 진행 중\"):\n",
    "    df.loc[i, \"question_translated\"] = translator(row[\"question\"])\n",
    "    df.loc[i, \"ground_truth_translated\"] = translator(row[\"ground_truth\"])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "df.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "번역 전"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# question, ground_truth 열을 확인합니다.\n",
    "df.loc[:, [\"question\", \"ground_truth\"]].head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "번역한 결과를 확인합니다."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# question_translated, ground_truth_translated 열을 확인합니다.\n",
    "df.loc[:, [\"question_translated\", \"ground_truth_translated\"]].head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# question, ground_truth 열을 삭제하고 question_translated, ground_truth_translated 열의 이름을 변경합니다.\n",
    "df.drop(columns=[\"question\", \"ground_truth\"], inplace=True)\n",
    "df.rename(\n",
    "    columns={\n",
    "        \"question_translated\": \"question\",\n",
    "        \"ground_truth_translated\": \"ground_truth\",\n",
    "    },\n",
    "    inplace=True,\n",
    ")\n",
    "df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 번역한 데이터셋을 저장합니다.\n",
    "df.to_csv(\"data/ragas_synthetic_dataset_translated.csv\", index=False)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Hugging Face Dataset 업로드\n",
    "\n",
    "Pandas DataFrame 을 Hugging Face Dataset 으로 변환하여 업로드를 진행합니다."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "from datasets import Dataset\n",
    "\n",
    "# pandas DataFrame을 Hugging Face Dataset으로 변환\n",
    "dataset = Dataset.from_pandas(df)\n",
    "\n",
    "# 데이터셋 확인\n",
    "print(dataset)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "from datasets import Dataset\n",
    "import os\n",
    "\n",
    "# pandas DataFrame을 Hugging Face Dataset으로 변환\n",
    "dataset = Dataset.from_pandas(df)\n",
    "\n",
    "# 데이터셋 이름 설정 (원하는 이름으로 변경하세요)\n",
    "dataset_name = \"teddylee777/ragas-test-dataset\"\n",
    "\n",
    "# 데이터셋 업로드\n",
    "dataset.push_to_hub(\n",
    "    dataset_name,\n",
    "    private=True,  # private=False로 설정하면 공개 데이터셋이 됩니다.\n",
    "    split=\"korean_v1\",  # 데이터셋 split 이름 입력\n",
    "    token=os.getenv(\"HUGGINGFACEHUB_API_TOKEN\"),\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "[참고] Dataset Viewer 는 표기되기까지 시간이 좀 걸릴 수 있습니다."
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "py-test",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.9"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
